Share via


System.Collections.ObjectModel.ObservableCollection<T> 類別

本文提供此 API 參考文件的補充備註。

類別 ObservableCollection<T> 代表動態數據收集,可在新增或移除專案時或重新整理整個清單時提供通知。

在許多情況下,您使用的資料是物件的集合。 例如,數據系結中的常見案例是使用 ItemsControl ,例如 ListBoxListViewTreeView 來顯示記錄集合。

您可以列舉實作 IEnumerable 介面的任何集合。 不過,若要設定動態繫結,讓集合中的插入或刪除作業自動更新 UI,則集合必須實作 INotifyCollectionChanged 介面。 這個介面會 CollectionChanged 公開 事件,這個事件應該在基礎集合變更時引發。

類別 ObservableCollection<T> 是實作 介面的 INotifyCollectionChanged 數據收集類型。

實作您自己的集合之前,請考慮使用 ObservableCollection<T> 或其中一個現有的集合類別,例如 List<T>Collection<T>BindingList<T> 等。 如果您有進階案例,而且想要實作自己的集合,請考慮使用 IList,以提供可依索引個別存取之物件的非泛型集合。 實作 IList 可提供數據系結引擎的最佳效能。

注意

若要完全支援將數據值從系結來源物件傳輸到系結目標,支援可系結屬性的集合中的每個物件都必須實作適當的屬性變更通知機制,例如 INotifyPropertyChanged 介面。

如需詳細資訊,請參閱數據系結概觀中的

XAML 使用方式的注意事項

ObservableCollection<T> 可以在 Windows Presentation Foundation 中做為 XAML 物件專案,在 3.0 和 3.5 版中使用。 不過,使用方式有相當大的限制。

  • ObservableCollection<T> 必須是根元素,因為 x:TypeArguments 必須用來指定泛型 ObservableCollection<T> 限制型別的屬性只支援根元素的對象專案。

  • 您必須宣告 x:Class 屬性(這需要此 XAML 檔案的建置動作必須是 Page 或其他編譯 XAML 的建置動作)。

  • ObservableCollection<T> 位於一開始未對應至預設 XML 命名空間的命名空間和元件中。 您必須對應命名空間和元件的前置詞,然後在的對象項目標記上使用該前置詞。ObservableCollection<T>

在應用程式中使用 ObservableCollection<T> XAML 功能更直接的方式,就是宣告衍生自 ObservableCollection<T>的您自己的非泛型自定義集合類別,並將它限制為特定類型。 然後對應包含這個類別的元件,並將其參考為 XAML 中的物件專案。